Dynamic soft keyboard

ABSTRACT

In accordance with one or more aspects of a dynamic soft keyboard, a user input is received via a soft keyboard having multiple keys. Information describing a current input environment for the soft keyboard is obtained, and a determination is made as to which one or more keys of the multiple keys was intended to be selected by the user input. This determination is made based at least in part on the current input environment.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/375,830, filed Dec. 12, 2016, entitled “Dynamic Soft Keyboard”, whichis a continuation of U.S. patent application Ser. No. 12/025,721, filedFeb. 4, 2008, entitled “Dynamic Soft Keyboard”, the disclosures of whichare hereby incorporated by reference herein in their entirety.

BACKGROUND

Many different types of mobile computing devices are currentlyavailable, typically providing a large amount of computing power in asmall package. One challenge faced by mobile devices, however, is dataentry. Users are accustomed to entering data via keyboards which can belarge and cumbersome, oftentimes larger than the mobile computing deviceitself. Some mobile computing devices solve this problem by using a softkeyboard, which is a keyboard displayed on a display of the mobiledevice and which allows the user to select the keys that are displayed(e.g., using a stylus, the user's finger, etc.). Unfortunately, due tothe lack of physically separate keys and the frequently small size ofsoft keyboards, it remains difficult for users to select keys on softkeyboards.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

A dynamic soft keyboard is discussed herein. In accordance with one ormore aspects, a user input is received via a soft keyboard, the softkeyboard including multiple keys. Information describing a current inputenvironment for the soft keyboard is obtained, and a determination ismade as to which one or more keys of the multiple keys was intended tobe selected by the user input. This determination is made based at leastin part on the current input environment.

BRIEF DESCRIPTION OF THE DRAWINGS

The same numbers are used throughout the drawings to reference likefeatures.

FIG. 1 is a block diagram illustrating an example computing deviceimplementing the dynamic soft keyboard in accordance with one or moreembodiments.

FIG. 2 illustrates an example display device displaying a soft keyboardin accordance with one or more embodiments.

FIG. 3 illustrates an example system implementing the dynamic softkeyboard in accordance with one or more embodiments.

FIG. 4 is a flowchart illustrating an example process for a dynamic softkeyboard in accordance with one or more embodiments.

FIG. 5 illustrates an example computing device that can be configured toimplement the dynamic soft keyboard in accordance with one or moreembodiments.

DETAILED DESCRIPTION

A dynamic soft keyboard is discussed herein. A soft keyboard userinterface is displayed to a user. Various information describing thecurrent input environment for the soft keyboard user interface is alsoobtained. This information describing the current input environment caninclude, for example, information describing a current type of databeing entered by the user (e.g., an email address, a zip code, a city,etc.), information describing a language typically used by the user,data commonly entered by the user, the physical operating environment(e.g., on a desk, in motion walking, in a moving car, etc.), thecharacters and/or words near a data input field, and so forth. Thisinformation describing the current user input environment is used todetect which key(s) of the soft keyboard was intended to be selected bythe user when a user input is received. The dynamic soft keyboard canthus aid user input speed and user satisfaction.

FIG. 1 is a block diagram illustrating an example computing device 100implementing the dynamic soft keyboard in accordance with one or moreembodiments. Computing device 100 can be any of a variety of differentdevices. For example, computing device 100 can be a desktop computer, amobile station, an entertainment appliance, a set-top boxcommunicatively coupled to a display device, a television, a wirelessphone, a digital camera, a game console, an automotive computer, and soforth. Thus, computing device 100 may range from a full resource devicewith substantial memory and processor resources (e.g., personalcomputers, game consoles) to a low-resource device with limited memoryand/or processing resources (e.g., traditional set-top boxes, hand-heldgame consoles).

Computing device 100 includes a soft keyboard control module 102 and apredictive keyboard module 104. Soft keyboard control module 102generates a soft keyboard 108 for display to a user. Soft keyboard 108is a user interface displayed on a display device. Soft keyboard 108includes multiple keys that can be selected by a user as discussed inmore detail below. Computing device 100 can include a display componentvia which soft keyboard 108 can be displayed, or alternatively canoutput a signal or data to another device or component via which softkeyboard 108 can be displayed.

Soft keyboard 108 includes multiple keys that can be arranged in any ofa variety of different layouts and that can correspond to any of avariety of different alphanumeric characters, kanji symbols, characteror word groups (e.g., “http://”, “www.”, and so forth), other symbols,and so forth. One example layout for the keys is a QWERTY layout,although other layouts can alternatively be provided. Additionally, softkeyboard 108 is dynamic. This dynamic nature refers to the behavior ofpredictive keyboard module 104 changing over time and/or the userinterface displayed as soft keyboard 108 changing over time. Asdiscussed in more detail below, this changing can include a changing ofthe layout of the keyboard, a change in the different alphanumericcharacters or symbols corresponding to the keys, a change in whichlocations on soft keyboard 108 correspond to which keys, a change in hittarget logic, and so forth.

Soft keyboard 108 is displayed on a display device and user inputs areentered via this display device as well. In one or more embodiments, thedisplay device displaying soft keyboard 108 is, or incorporates, a touchscreen or touchpad via which user inputs can be entered by the usertouching, or coming in close physical proximity to, the areas of thedisplay device that display the keys of soft keyboard 108. This touchingor close physical proximity can be made using a stylus, pen, finger, andso forth. In other embodiments, other pointing devices are used ratherthan a touch screen or touchpad. Any of a variety of other pointingdevices can be used to navigate a pointer and enter inputs using softkeyboard 108, including relative pointing devices such as a mouse,thumbstick, trackpad, trackball, and so forth. Other types of pointingdevices can also be used, including absolute disconnected pointingdevices such as pen tablets. These various pointing devices typicallyinclude one or more buttons or other selection mechanism(s) that can beactuated by the user to select a particular location of soft keyboard108 (e.g., the user can press a mouse button when a pointer is locatedover the desired area of soft keyboard 108). There need not be anyseparate physical keyboard with physical keys that correspond to softkeyboard 108 via which user inputs are entered.

FIG. 2 illustrates an example display device 200 displaying a softkeyboard 202 in accordance with one or more embodiments. Soft keyboard202 can be, for example, soft keyboard 108 of FIG. 1. It is to beappreciated that the example layout and alphanumeric characterscorresponding to the keys of soft keyboard 202 are only an example, andthat any of a variety of different layouts and/or correspondingcharacters or symbols can be used as discussed above. In the example ofFIG. 2, soft keyboard 202 does not occupy all of the display area ofdisplay device 200, leaving room for other information to be displayedto the user of device 200. Alternatively, soft keyboard 202 can occupyall, or almost all, of the display area of display device 200. Softkeyboard 202 can also optionally include a user interface mechanism forhide and show functionality, allowing keyboard 202 to be hidden fromview at certain times.

As discussed above, any of a variety of different pointing devices canbe used to enter inputs on soft keyboard 202. As an example of apointing device, FIG. 2 illustrates a stylus 204 which the user can useto touch, or hover over, a particular key of keyboard 202. When the usertouches a particular area of keyboard 202 (with stylus 204 or a pointercontrolled by another pointing device), or moves stylus 204 (or otherpointer) over a particular area of keyboard 202, the particular key thatthe user intended to select by the touching or movement of the stylus orother pointing device is automatically detected. The manner in whichthis automatic detection is performed is based at least in part on acurrent input environment, as discussed in more detail below.

In one or more embodiments, display device 200 includes a touch screenor touchpad allowing the user to touch, or move a stylus close to,different areas of display device 200 to allow the user to enter a userinput. Such a touch screen or touchpad can be an electromagnetic inputdevice, a capacitive input device, a resistive input device, a surfaceacoustic wave input device, an optical imaging input device, and soforth. Such touch screens or touchpads are well-known to those skilledin the art. It is to be appreciated that if other pointing devices areused (such as a mouse, pen tablet, etc.), then display device 200 neednot include a touch screen or touchpad.

Returning to FIG. 1, soft keyboard control module 102 also receives userinput 110. User input 110 refers to the selection of a particularlocation(s) of soft keyboard 108. This selection can be made using astylus, pen, finger, pointer controlled by a pointing device, and soforth as discussed above. The user input 110 is typically represented bymodule 102 as a set of one or more coordinates (e.g., X-Y coordinates,X-Y-Z coordinates, etc.) identifying the location(s) of soft keyboard108 that were selected by the user. As discussed above, this selectioncan include the touching, or moving in close proximity to, a touchscreen or touchpad, or other inputs from other pointing devices. The Xand Y coordinates refer to the horizontal and vertical locations,respectively, of the input surface (e.g., the surface of a touch screen,touchpad, pen tablet, and so forth). The Z coordinate represents thedistance from the input surface, and can be used to determine whether auser is hovering over a portion of the input surface.

In one or more embodiments, user input 110 is a stream of data (e.g., astream of X-Y coordinates, a stream of X-Y-Z coordinates, etc.). Thisstream of data includes one or more of an incoming trajectory, one ormore pen-down trajectories, and an outgoing trajectory. The incomingtrajectory refers to a stream of coordinates before the pointing devicehits the surface (or before the selection mechanism is actuated by theuser). A pen-down trajectory refers to a location on the surface thatthe pointing device hits (or that the pointer is located at when theselection mechanism is actuated by the user). Oftentimes there is asingle pen-down trajectory, although multiple pen-down trajectories canbe received (e.g., if the user bounces the pen as it hits the surface).The outgoing trajectory refers to a stream of coordinates as thepointing device leaves the surface (or after the selection mechanism isactuated by the user).

Predictive keyboard module 104 receives user input 110 from softkeyboard control module 102. Predictive keyboard module 104 determines,based on both user input 110 and information describing the currentinput environment for soft keyboard 108, which one or more keys of softkeyboard 108 the user intended to select with user input 110. Asdiscussed in more detail below, this current input environment describesvarious aspects of the environment in which soft keyboard 108 isdisplayed, such as a current type of data being entered by the user(e.g., an email address, a zip code, a city, etc.), a language typicallyused by the user of soft keyboard 108, data commonly entered by the userof soft keyboard 108, and so forth.

In one or more embodiments predictive keyboard module 104 alsodetermines, based on user input 110 and/or information describing thecurrent input environment for soft keyboard 108, changes to make to softkeyboard 108. These changes can be a change in layout of the keyboardand/or a change in the different alphanumeric characters or symbolscorresponding to the keys, as discussed in more detail below.

FIG. 3 illustrates an example system implementing the dynamic softkeyboard in accordance with one or more embodiments. System 300 can be,for example, computing device 100 of FIG. 1. System 300 includes a softkeyboard control module 302 (which can be soft keyboard control module102 of FIG. 1), and a predictive keyboard module 304 (which can bepredictive keyboard module 104 of FIG. 1). Modules 302 and 304 can beimplemented as part of the same device or alternatively can beimplemented by different devices. Additionally, each of modules 302 and304 themselves can be implemented by a single device or alternativelymultiple devices.

Soft keyboard control module 302 generates a soft keyboard 308 andreceives user input 310 (analogous to soft keyboard 108 and user input110 of FIG. 1). User input 310 is a selection made by a user of softkeyboard 308, the selection being a selection of a particular one ormore locations of soft keyboard 308. This selection can be made indifferent manners, such as by touching the display device with a finger,pen, stylus, etc., by moving a pointer over a location of the softkeyboard, by moving a pen or stylus close to the display device, and soforth. This selection includes one or more of an incoming trajectory,one or more pen-down trajectories, and an outgoing trajectory asdiscussed above. Soft keyboard control module 302 can represent userinput 310 in any of a variety of different manners.

In one or more embodiments, user input 310 is represented as a set ofone or more X-Y coordinates. The set of X-Y coordinates identify aparticular location of soft keyboard 308 in a 2-dimensional space. Aparticular location of soft keyboard 308 is determined to be the origin(e.g., the lower-left corner of soft keyboard 308, the center of softkeyboard 308, etc.), and the X-Y values represent locations along the Xaxis and the Y axis relative to the origin.

Additionally, in one or more embodiments the display device on whichsoft keyboard 308 is displayed supports a Z axis. This Z axis isperpendicular to the 2-dimensional space of the X-Y coordinates. Suchdisplay devices can detect, for example, a stylus positioned close tobut not touching the display device. The distance between the stylus andthe display device is recorded as a Z value. Thus, when used with suchdisplay devices, user input 310 is represented as a set of one or moreX-Y-Z coordinates.

Additionally, in one or more embodiments an additional time value T isrecorded for the user input. The time value T refers to the duration ofthe user's selection, such as an amount of time that the user's styluswas touching a particular X-Y location of keyboard 308, an amount oftime that the user's stylus was held a particular distance Z from aparticular X-Y location of keyboard 308, the amount of time that apointer was held over (hovered over) a particular X-Y location ofkeyboard 308, and so forth. Thus, in such embodiments user input 310 isrepresented as a set of one or more X-Y-T, or alternatively X-Y-Z-T,coordinates. The time value T is an input into predictive keyboardengine 320, and can be used to make better predictions for the textinput desired by the user as discussed in more detail below.

Furthermore, in one or more embodiments, multiple locations of keyboard308 can be selected concurrently. These multiple locations could be, forexample, two or more locations selected simultaneously (e.g., using twofingers), such as the “Shift” key plus a letter key, the “Control” keyplus a letter key, and so forth. These multiple locations could also bemovement from one location to another (e.g., touch keyboard 308 with astylus at one location, slide the stylus across the display device, andthen lift up the stylus at another location), and so forth. In suchsituations, user input 310 is represented as a set of multiplecoordinates (e.g., X-Y, X-Y-Z, X-Y-T, X-Y-Z-T, etc.). One or morecoordinates optionally also includes a trajectory parameter thatidentifies a direction in which the stylus (or finger, pen, etc.) isbeing moved along the display device, either when in contact with thedisplay device or located close to the display device (e.g., a distanceZ from the display device). In some embodiments, given current hardware,users typically have more errors in targeting in the vertical directionand are more precise in the horizontal direction.

Predictive keyboard module 304 receives user input 310 from softkeyboard control module 302 and determines, based on both user input 310and information describing the current input environment for softkeyboard 308, which one or more keys of soft keyboard 308 the userintended to select with user input 310. In one or more embodimentspredictive keyboard module 304 also determines changes to make to softkeyboard 308 based at least in part on the current input environment. Anindication of these changes is sent to soft keyboard control module 302,which changes the display of soft keyboard 308 accordingly.

Predictive keyboard module 304 includes a predictive keyboard engine320, an operation mode detection module 322, a language dictionariesmodule 324, a user specific lexica module 326, a context mapping module328, a language detection module 330, and a word and phrase n-gramstatistics module 332. Each of modules 322-332 provides, to predictivekeyboard engine 320, various information regarding the current inputenvironment for soft keyboard 308. Predictive keyboard engine 320 inturn uses this information regarding the current input environment tochange soft keyboard 308 (e.g., the layout or the characters or symbolscorresponding to particular keys), and also to determine which one ormore keys of soft keyboard 308 the user intended to select with userinput 310.

Predictive keyboard engine 320 outputs an indication 340 of which key auser intended to select with a particular user input. This indication340 is typically used to update the user interface of soft keyboard 308,and can also be provided to another component (not shown) forutilization as a character(s) entry. This indication 340 can also bereturned to one or more of modules 322-332 to assist in determining thecurrent input environment. For example, as discussed in more detailbelow, user specific lexica module 326 can monitor words that are inputby the user.

Additionally, in one or more embodiments predictive keyboard engine 340also outputs a predicted input string 360 which is a prediction byengine 340 of a particular word or phrase that the user is inputting.Outputting this predication allows the user to select an “autocomplete”option where the predicted word or phrase is input without the userneeding to enter any more characters of the word or phrase. Thepredicted input string 360 is provided to soft keyboard control module302 or alternatively another component of system (not shown) so that thepredicted word or phrase can be displayed to the user. The user canselect this displayed predicted word or phrase in different manners viasoft keyboard 308, such as by selecting an “enter” key, by selecting an“autocomplete” key, by selecting a particular character in the predictedword or phrase, and so forth. It should be noted that the user can alsooptionally select only a portion of the predicted word or phrase.

Operation mode detection module 322 detects the operation mode of thedevice on which soft keyboard 308 is being displayed. The operation modecan include, for example, the physical situation and/or geographicallocation of the device. The physical situation refers to a physicaldescription of how the device is being used. This physical descriptioncan include, for example, whether the device is stationary or moving,whether the device is oriented in a particular direction, and so forth.The physical situation can be determined in different manners, such asbeing specified by a user of the device, using motion sensors in thedevice, based on peripheral devices or other components that the deviceis coupled to, based on communications with a wireless base or accesspoint, and so forth.

The geographic location refers to a geographic description of where thedevice is located. The geographic location can be determined indifferent manners, such as being specified by a user of the device,using a global positioning system (GPS) of the device, based on anaddress (e.g., Internet protocol (IP) address) assigned to the device,and so forth.

The information describing the operation mode of the device fromoperation mode detection module 322 can be used by predictive keyboardengine 320 in a variety of different manners. For example, predictivekeyboard engine 320 may assume that it is more difficult to accuratelyidentify a particular key when a device is moving rather thanstationary, so engine 320 may assign larger areas of soft keyboard 308to particular keys when the device is moving rather than when the deviceis stationary. These larger areas could corresponding to larger keysbeing displayed on soft keyboard 308, or larger hit targets forparticular keys as discussed in more detail below.

Language dictionaries module 324 makes one or more language-specificdictionaries available to predictive keyboard engine 320. Predictivekeyboard engine 320 can automatically attempt to identify particularwords or phrases that are being input by a user so that a next character(or other symbol) that is likely to be input by the user can bedetermined. For example, if the user enters “uni”, predictive keyboardengine 320 may automatically identify that the user is attempting toenter the word “united”, so the next character input by the user islikely to be the letter “t”. Predictive keyboard engine 320 can usevarious information from different modules 322-332 to attempt toidentify particular words or phrases that are being input by a user, oneof which is the specific language typically being used by the user. Onepiece of information provided to predictive keyboard engine 320 bylanguage dictionaries module 324 to assist in making this determinationis a dictionary of words and/or phrases for the language(s) typicallybeing used by the user.

The language(s) typically being used by the user can be identified indifferent manners. For example, the language(s) can be specified by theuser, can be a default language based on a location where system 300 issold (e.g., if system 300 was sold in France, then the default languagewould be French), can be based on previous inputs by the user (e.g., ifthe majority of previous inputs were in English, then the language wouldbe English), can be obtained from another module (such as languagedetection module 330 discussed in more detail below), and so forth.

User specific lexica module 326 gathers and maintains informationregarding words (or other data, such as numbers, symbols, etc.) that arecommonly entered by a user. This information can be gathered andmaintained in a variety of different manners. In one or moreembodiments, words entered by the user and a corresponding frequencyindicating how often those words are entered is maintained. Thisfrequency can be, for example, a word count that is incremented everytime the word is entered, a ratio indicating how often the word occursrelative to other words maintained by module 326, and so forth.Additionally, a user or administrator (e.g., for a corporation the userworks for) can optionally install a new custom dictionary adding theirwords as they are input by the user (and/or optionally including defaultwords and frequencies for the user).

Furthermore, the words that are tracked or maintained by module 326 canbe aged over time, so that words used with the same frequency but longerago are identified as less commonly used by the user than words thatwere entered more recently. This aging can be performed in differentmanners, such as by maintaining a record of how long ago a particularword was used (e.g., in minutes, hours, days, etc.), by altering (e.g.,decreasing) the frequency corresponding to a word that has not been usedfor at least a threshold amount of time, and so forth.

As discussed above, predictive keyboard engine 320 can automaticallyattempt to identify particular words or phrases that are being input bya user. One piece of information provided to predictive keyboard engine320 by user specific lexica module 326 is the information regardingwords (or other data) that are commonly entered by the user.

Context mapping module 328 maintains a mapping of particular fields inwhich a user may enter data to types of data that are valid for eachparticular field. For example, if the field is a zip code field then thevalid data could be numbers but not letters. By way of another example,if the field is an email address field, then the valid data could beletters, numbers, and some symbols (such as “@”), but not other symbols(such as “!” or “#”).

Context mapping module 328 can identify particular fields beingdisplayed to a user along with soft keyboard 308 in any of a variety ofdifferent manners. For example, the data being displayed on the screencan be analyzed and certain fields identified (e.g., a field with alabel of “zip” or “zip code”, a field with a label of “email” or “emailaddress”, and so forth). By way of another example, various tags oridentifiers can be included in the data being displayed along with softkeyboard 308, these tags or identifiers indicating to context mappingmodule 328 the particular fields being displayed. By way of anotherexample, input fields can explicitly declare their existence as well astheir “type” or legal input restrictions via an operating systemapplication programming interface (API) on system 300.

The valid types of data for particular fields can be identified indifferent manners. In one or more embodiments, the valid types of datafor particular fields are pre-programmed in or otherwise identified tocontext mapping module 328. For example, various tags, identifiers, orother metadata corresponding to data being displayed along with softkeyboard can identify the valid types of data for particular fields, orother remote devices can be accessed to obtain the valid types of datafor particular fields. By way of another example, an operating systemAPI on system 300 can be invoked to obtain the valid types of data forparticular fields. In other embodiments, one or more valid types of datafor particular fields can be automatically identified by context mappingmodule 328. For example, context mapping module 328 can learn that aparticular type of data is not valid for a particular field if the userattempts to enter data of that type and an error is returned to the userby a program or other component processing the input.

The context mapping information from context mapping module 328 can beused by predictive keyboard engine 320 in any of a variety of differentmanners. In one or more embodiments, predictive keyboard engine 320determines that particular types of data that are not valid for aparticular field are not intended to be selected with user input 310.For example, if the particular field accepts only numbers, thenpredictive keyboard engine 302 can determine that the key that a userintended to select would be a number key on soft keyboard 308 that isclosest to user input 310. By way of another example, if the particularfield accepts only numbers, then predictive keyboard engine 320 canindicate to soft keyboard control module 302 that soft keyboard 308 isto include only numbers and no letters.

Alternatively, predictive keyboard engine 320 can determine thatparticular types of data that are valid are to be easier for the user toselect than other types of data. For example, if the symbol “@” is avalid symbol for a particular field but the symbols “!” and “#” are notvalid symbols for that field, then hit target logic implemented bypredictive keyboard engine 320 can increase the likelihood that the “@”symbol is selected. This likelihood can be increased in differentmanners, such as by making a hit target for the “@” symbol larger thanfor the “!” and “#” symbols. The hit target on soft keyboard 308 for aparticular key refers to the locations of soft keyboard 308 thatcorrespond to that particular key. As the “!” and “#” symbols are oneither side of the “@” symbol on many keyboards, altering the hit targetsize makes it easier for the user to select the “@” symbol by touchingsoft keyboard 308 on or close to the “@” symbol. The use of hit targetsand hit target logic implemented by predictive keyboard engine 320 arediscussed in more detail below.

Language detection module 330 identifies the language being used by theuser of system 300. The language can be identified in different manners,such as the user specifying the language, or module 330 automaticallyidentifying the language. Module 330 can automatically identify thelanguage by, for example, accessing a default language for system 300(e.g., as recorded by an operating system), accessing context mappingmodule 328 to identify types of data and their corresponding language(e.g., if kanji symbols are the valid type of data, then the languagecan be automatically identified as Japanese), and so forth.

The language identified by language detection module 330 can be thelanguage typically used by the user of system 300, or alternatively canbe the language used by the user of system 300 for a particular entrybeing made by the user. For example, if the user has entered a partialword (e.g., “uni”), then language detection module 330 can automaticallydetect a language being entered by the user. This can be a stand-alonedetection (e.g., based only on the partial word), or alternatively canbe in conjunction with other information (e.g., the language(s)typically used by the user of system 300).

Word and phrase n-gram statistics module 332 identifies words or phrasesthat are more likely than others based on partial inputs. This caninclude, for example, identification of a word based on a partial wordinput, and identification of a phrase based on a single (or multiple)word input. In one or more embodiments, this identification is based onactual words (e.g., from a dictionary supplied by language dictionariesmodule 324). For example, if the word “united” is entered then module332 can indicate that a word “states” is more likely than a word “run”.

In other embodiments, this identification by module 332 is based ongrammar rules or other rules. For example, two verbs are typically notadjacent one another, so if a verb is entered as a first word thenmodule 332 can indicate that the next word in the phrase is not likelyto be a verb. By way of another example, module 332 can determine that aphrase “United States of America” is often entered by the user of system300, so module 332 can determine that if “United States” has beenentered by the user then “of America” is more likely next in the phrasethan other word combinations.

The information identifying likely words or phrases from word and phrasen-gram statistics module 332 can be used by predictive keyboard engine320 in any of a variety of different manners. Analogous to thediscussion above regarding context mapping module 328, the informationidentifying likely words or phrases can be used to determine thatparticular words, letters, or other symbols are not intended to beselected with user input 310 and thus disallow entry of such words,letters, or other symbols, or alternatively can alter hit targets makingit easier for the user to select particular words, letters, or othersymbols.

Predictive keyboard engine 320 receives information describing thecurrent input environment from the various modules 322-332 as discussedabove. Predictive keyboard engine 320 uses this information describingthe current input environment to change the layout and/or alphanumericcharacters or symbols corresponding to the keys of soft keyboard 308,and/or to determine which key a user intended to select with aparticular user input. Predictive keyboard engine 320 repeats thischanging and/or determination after each selection of a key(s) is madeby the user. The current input environment can change after everyselection of a key(s) by the user, and the new current input environmentcan be taken into account by predictive keyboard engine 320 after everyselection of a key(s) by the user.

As discussed above, the information describing the current inputenvironment can indicate that certain inputs are more likely thanothers. In one or more embodiments, this information is used to changethe layout of soft keyboard 308. For example, the information can beused to change the layout of soft keyboard 308 from a QWERTY layout to anumeric pad layout, to include only certain keys from the QWERTY layout,and so forth.

In other embodiments, the information describing the current inputenvironment is used to change which alphanumeric characters or othersymbols correspond to the keys of soft keyboard 308. In response to sucha change, soft keyboard 308 displays the new corresponding characters orsymbols for those keys rather than the previously displayed charactersor symbols, and selection of one of those keys results in a user inputof the displayed corresponding character or symbol. For example, a rowof keys of soft keyboard 308 may be changed from corresponding tonumbers to corresponding to symbols. By way of another example, certainkeys may be changed to correspond to certain language-specificcharacters and/or symbols.

In other embodiments, the information describing the current inputenvironment is used to change the faces of keys of soft keyboard 308. Inresponse to such a change, soft keyboard 308 displays different facesfor keys. For example, keys that are likely and/or possible futureletters of words that are being entered can be highlighted. By way ofanother example, keys for letters that would not result in a word (basedon letters already entered) could be dimmed to aid in visual targetingand reduce user effort.

In other embodiments, the information describing the current inputenvironment is used to determine which key a user intended to selectwith a particular user input. Predictive keyboard engine 320, includinga hit target logic, uses the current input environment along with userinput 310 to identify which particular key on soft keyboard 308 the userintended to select.

One way in which predictive keyboard engine can use the current inputenvironment and user input 310 is to alter the sizes of hit targets forparticular keys. As discussed above, each key on soft keyboard 308 canhave a corresponding hit target and predictive keyboard engine 320 canassign the hit target to each key. This hit target for a particular keyrefers to the locations on soft keyboard 308 that correspond to thatparticular key. The hit target for a particular key can be altered—thehit target can be increased in size by predictive keyboard engine 320 sothat more locations on soft keyboard 308 correspond to that particularkey, or can be decreased in size by predictive keyboard engine 320 sothat fewer locations on soft keyboard 308 correspond to that particularkey. Increasing the hit target for a key thus typically makes it easierfor the user to select that key, while decreasing the hit target for akey typically makes it more difficult for the user to select that key.

It should be noted that this can result in situations where the hittarget for one key is larger than an adjacent key, and actually extendsover a portion of the display of the adjacent key. For example, assumethat predictive keyboard engine 320 determines that a letter “d” islikely to be the next character input by the user. The hit target forthe letter “d” can be increased while the hit target for an adjacentletter “f” can be decreased. The hit target for the letter “d” caninclude locations in which the key for the letter “f” is actuallydisplayed on soft keyboard 308. Thus, in this example if the user wereto press the location at the edge of the key for the letter “f”,predictive keyboard engine 320 determines that the letter “d” is the keythat was intended to be selected by the user. Such situations can occurfor a variety of different reasons, such as if the user is walking whilemaking inputs (in which case it is more difficult for the user toaccurately hit a desired key).

Additionally, predictive keyboard engine 320 can make certain keys onsoft keyboard 308 invalid. Thus, predictive keyboard engine 320 does notindicate an invalid key was intended to be selected with a particularuser input regardless of what that particular user input is. Forexample, if the “!” symbol is determined to be invalid, then predictivekeyboard engine 320 does not indicate that the “!” symbol was intendedto be selected with a particular user input regardless of what thatparticular user input is.

Predictive keyboard engine 320 can determine how to change the layoutand/or alphanumeric characters or symbols corresponding to the keys ofsoft keyboard 308, and/or determine which key a user intended to selectwith a particular user input in a variety of different manners. In oneor more embodiments, predictive keyboard engine 320 is a learning systemthat is trained with various inputs (combinations of user input 310 andvarious different information describing the current input environment).This training involves providing engine 320 with the various inputs andthe correct answer so that engine 320 can learn what answers should begiven in response to the various inputs. An initial training istypically performed by the designers of predictive keyboard engine 320,and additional training can be performed during operation of system 300.This additional training can be performed, for example, based onfeedback given to engine 320 indicating whether a particular output 340was the correct output. Any of a variety of different learning systemscan be used including artificial intelligence systems and otherstatistical-based systems. For example, such learning systems caninclude an artificial neural network, Bayesian inference system,k-nearest neighbor algorithm, and so forth.

Alternatively, predictive keyboard engine 320 can be implemented asother systems. For example, engine 320 can be implemented using any of avariety of statistical analysis systems to evaluate the user input 310and the various different information describing the current inputenvironment. By way of another example, engine 320 could be implementedusing various other rules, criteria, or weightings applied to the userinput 310 and the various different information describing the currentinput environment.

Thus, it can be seen that soft keyboard 308 is dynamic. In one or moreembodiments soft keyboard 308 changes layouts and/or alphanumericcharacters or symbols corresponding to the keys, resulting in a dynamicsoft keyboard. Additionally, in one or more embodiments which key a userintended to select with a particular user input can change, resulting ina dynamic soft keyboard. Such changes regarding which key a userintended to select with a particular user input can be made with orwithout displaying an indication of such changes to the user.

FIG. 4 is a flowchart illustrating an example process 400 for a dynamicsoft keyboard in accordance with one or more embodiments. Process 400 iscarried out by a system, such as system 300 of FIG. 3, and can beimplemented in software, firmware, hardware, or combinations thereof.Process 400 is shown as a set of acts that specify operations performedby one or more devices and are not necessarily limited to the ordersshown for performing the operations by the respective acts. Process 400is an example process for a dynamic soft keyboard; additionaldiscussions of the dynamic soft keyboard are included herein withreference to other Figures.

Initially, a user input is received via a soft keyboard (act 402). Thisuser input is a particular one or more locations of a soft keyboard asdiscussed above. Additionally, information describing a current inputenvironment is obtained (act 404). This information can be any of avariety of different types of information, such as the informationdiscussed above with reference to modules 322-332 of FIG. 3.

A particular one or more keys that were intended to be selected by theuser input are determined (act 406) based at least in part on theinformation obtained in act 404. An indication of the one or more keysthat were determined to be selected by the user is output (act 408). Anindication of a predicted input string is also optionally output (act410). Additionally, in one or more embodiments the soft keyboard isaltered (act 412) based at least in part on the information obtained inact 404. This altering can be, for example, changing the layout and/orchanging the alphanumeric characters or symbols corresponding to thekeys of the soft keyboard as discussed above.

FIG. 5 illustrates an example computing device 500 that can beconfigured to implement the dynamic soft keyboard in accordance with oneor more embodiments. Computing device 500 can be, for example, computingdevice 100 of FIG. 1.

Computing device 500 includes one or more processors or processing units502, one or more computer readable media 504 which can include one ormore memory and/or storage components 506, one or more input/output(I/O) devices 508 via which user input 110 of FIG. 1 (or user input 310of FIG. 3) are received, and a bus 510 that allows the variouscomponents and devices to communicate with one another. Computerreadable media 504 and/or I/O device(s) 508 can be included as part of,or alternatively may be coupled to, computing device 500. Bus 510represents one or more of any of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, and a processor or local bus using any of avariety of bus architectures. Bus 510 can include wired and/or wirelessbuses.

Memory/storage component 506 represents one or more computer storagemedia. Component 506 can include volatile media (such as random accessmemory (RAM)) and/or nonvolatile media (such as read only memory (ROM),Flash memory, optical disks, magnetic disks, and so forth). Component506 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.)as well as removable media (e.g., a Flash memory drive, a removable harddrive, an optical disk, and so forth).

The techniques discussed herein can be implemented in software, withinstructions being executed by processing unit(s) 502. It is to beappreciated that different instructions can be stored in differentcomponents of computing device 500, such as in a processing unit 502, invarious cache memories of a processing unit 502, in other cache memoriesof device 500 (not shown), on other computer readable media, and soforth. Additionally, it is to be appreciated that the location whereinstructions are stored in computing device 500 can change over time.

One or more input/output devices 508 allow a user to enter commands andinformation to computing device 500, and also allow information to bepresented to the user and/or other components or devices. Thisinformation presented to the user can include soft keyboard 108 of FIG.1 or soft keyboard 308 of FIG. 3. Examples of input devices include akeyboard, a cursor or pointer control device (e.g., a mouse, a trackpad,a thumbstick, a pen tablet, etc.), a microphone, a scanner, atouchscreen, a touchpad, and so forth. Examples of output devicesinclude a display device (e.g., a monitor or projector), speakers, aprinter, a network card, and so forth.

Various techniques may be described herein in the general context ofsoftware or program modules. Generally, software includes routines,programs, objects, components, data structures, and so forth thatperform particular tasks or implement particular abstract data types. Animplementation of these modules and techniques may be stored on ortransmitted across some form of computer readable media. Computerreadable media can be any available medium or media that can be accessedby a computing device. By way of example, and not limitation, computerreadable media may comprise “computer storage media” and “communicationsmedia.”

“Computer storage media” include volatile and non-volatile, removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules, or other data. Computer storage mediainclude, but are not limited to, RAM, ROM, EEPROM, flash memory or othermemory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed by acomputer.

“Communication media” typically embody computer readable instructions,data structures, program modules, or other data in a modulated datasignal, such as carrier wave or other transport mechanism. Communicationmedia also include any information delivery media. The term “modulateddata signal” means a signal that has one or more of its characteristicsset or changed in such a manner as to encode information in the signal.By way of example, and not limitation, communication media include wiredmedia such as a wired network or direct-wired connection, and wirelessmedia such as acoustic, RF, infrared, and other wireless media.Combinations of any of the above are also included within the scope ofcomputer readable media.

Generally, any of the functions or techniques described herein can beimplemented using software, firmware, hardware (e.g., fixed logiccircuitry), manual processing, or a combination of theseimplementations. The terms “module,” “functionality,” and “logic” asused herein generally represent software, firmware, hardware, orcombinations thereof. In the case of a software implementation, themodule, functionality, or logic represents program code that performsspecified tasks when executed on a processor (e.g., CPU or CPUs). Theprogram code can be stored in one or more computer readable memorydevices, further description of which may be found with reference toFIG. 5. The features of the dynamic soft keyboard techniques describedherein are platform-independent, meaning that the techniques can beimplemented on a variety of commercial computing platforms having avariety of processors.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

What is claimed is:
 1. One or more computer hardware memory devicesembodied with executable instructions for displaying a dynamic softkeyboard that, when executed by one or more processors of a device,cause the one or more processors to perform operations, comprising:receiving an indication of a user input within a user interface (UI)field on a screen; identifying a type of data that is valid for the UIfield receiving the user input; selecting keys to present in a softkeyboard based on the identified type of data that is valid for the UIfield receiving the user input; displaying the soft keyboard on thescreen with the keys that are selected based on the identified type ofdata, the keys having defined display boundaries that remain constantand associated hit targets that change; receiving a user selection of afirst key via the soft keyboard; predicting, based at least on the userselection, which one or more keys of the multiple keys are intended tobe selected by the user; and altering at least one hit target size of asecond key of the soft keyboard based at least one the user selection ofthe first key, the altering comprising: keeping defined displayboundaries of the the predicted one or more keys constant, and extendingthe hit target of the predicted one or more keys by increasing a size ofthe hit target of the predicted one or more keys while also decreasing asize of a hit target of one or more keys that are adjacent to thepredicted one or more keys.
 2. The one or more computer hardware memorydevices of claim 1, wherein the hit target of the second key isincreased into a display boundary of the second key.
 3. The one or morecomputer hardware memory devices of claim 1, further comprising changinglocations in the soft keyboard of at least one of the selected keysbased, at least partially, on the user selection of the first key. 4.The one or more computer hardware memory devices of claim 1, furthercomprising: identifying an operation mode of the device; and basing saidaltering of the at least one hit target of the second key, at leastpartially, on the identified operation mode of the device.
 5. The one ormore computer hardware memory devices of claim 1, further comprising:identifying at least one symbol specific to the UI field receiving theuser input; and displaying the at least one symbol in the soft keyboard.6. The one or more computer hardware memory devices of claim 1, whereinthe operation mode indicates a geographic location of the device.
 7. Theone or more computer hardware memory devices of claim 1, furthercomprising: predicting an input string that the user is attempting toenter based, at least partially, on the first key; and basing saidalternating sizes of the one or more hit targets of the one or moreother keys, at least partially, on the predicted input string.
 8. Theone or more computer hardware memory devices of claim 1, furthercomprising changing a layout of the soft keyboard between a QWERTYlayout and a numeric pad layout based, at least in part, on the type ofdata that is valid for the UI field receiving the user input.
 9. Themore computer hardware memory devices of claim 1, the alteringcomprising the keeping the defined display boundaries of the pluralityof the second key constant.
 10. The more computer hardware memorydevices of claim 1, the altering comprising the hit target size of thesecond key extended over the display boundary of a third key.
 11. Amethod implemented in a device, the method comprising: receiving a userinput within a user interface (UI) field on a screen of the device;selecting keys to present in a soft keyboard based on the identifiedtype of data that is valid for the UI field receiving the use input;identifying a type of data that is valid for the UI field receiving theuser input; displaying the soft keyboard on the screen with keys thatare selected based on the identified type of data, the keys havingdefined display boundaries that remain constant but with associated hittargets that change based on letters that are input; receiving a userselection of a first key via the soft keyboard; predicting, based atleast on the user selection, which one or more keys are the multiplekeys are intended to be selected by the user; and altering at least onehit target size of a second key of the soft keyboard based at least onethe user selection of the first key, the altering comprising: keepingdefined display boundaries of the predicted one or more keys constant,and extending the hit target of the predicted one or more keys byincreasing a size of the hit target of the predicted one or more keyswhile also decreasing a size of a hit target or one or more keys thatare adjacent to the predicted one or more keys.
 12. The method of claim11, wherein said extending the one or more hit targets of one or moreother keys of the soft keyboard beyond the defined display boundariescomprises increasing a size of a hit target for the first key into adisplay boundary of a second key.
 13. The method of claim 11, furthercomprising changing locations in the soft keyboard of at least one ofthe selected keys based, at least partially, on the user selection ofthe first key.
 14. The method of claim 11, further comprising:predicting an input string that the user is attempting to enter based,at least partially, on the first key; and basing said alternating sizesof the one or more other keys, at least partially, on the predictedinput string.
 15. The method of claim 11, further comprising:identifying at least one symbol specific to the UI field receiving theuser input; and displaying the at least one symbol in the soft keyboard.16. The method of claim 11, wherein said selection of the keys is based,at least partially, on an operation mode of the device indicating thedevice is stationary or moving.
 17. The method of claim 11, furthercomprising changing a layout of the soft keyboard between a QWERTYlayout and a numeric pad layout based, at least in part, on a type ofdata that is valid for the UI field receiving the user input.
 18. Acomputing device, comprising: a screen; memory storing executableinstructions for displaying and modifying a soft keyboard on the screen;and one or more processors for executing the executable instructions to:receive a user input within a user interface (UI) field on a screen;identify a type of data that is valid for the UI field receiving theuser input; select keys to present in a soft keyboard based on theidentified type of data that is valid for the UI field receiving theuser input; display the soft keyboard on the screen with the keys havingdefined boundaries that remain constant and associated hit targets thatchange based on letters that are input; receive a user selection of afirst key via the soft keyboard; predict, based at least on the userselection, which one or more keys of the multiple keys are intended tobe selected by the user; and alter at least one hit target size of asecond key of the soft keyboard based at least one the user selection ofthe first key, the altering further comprising: keeping defined displayboundaries of the the predicted one or more keys constant, and extendingthe at least one hit target size of the predicted one or more keys byincreasing a size of the hit target of the predicted one or more keyswhile also decreasing as size of a hit target of one or more keys thatare adjacent to the predicted one or more keys.
 19. The computing deviceof claim 18, further comprising changing locations in the soft keyboardof at least one of the selected keys based, at least partially, on theuser selection of the first key.
 20. The computing device of claim 19,further comprising changing a layout of the soft keyboard between aQWERTY layout and a numeric pad layout based, at least in part, on thetype of data that is valid for the UI field receiving the user input.